const gulp = require('gulp')
// const sass = 
const cssmin = require('gulp-cssmin')
const uglify = require('gulp-uglify')
const bable = require('gulp-babel') //es6-> es5
const htmlmin = require('gulp-htmlmin') //引入打包html文件依赖
const clean = require('gulp-clean')
const webserver = require('gulp-webserver')

gulp.task('copy', function () {
    return gulp.src('./src/js/test.js')
        .pipe(gulp.dest('./dist/js'))
})

gulp.task('cssCopy', function () {
    return gulp.src('./src/css/test.css').pipe(gulp.dest('./dist/css'))
})

gulp.task('lib', function () {
    return gulp.src('./src/lib/**')
        .pipe(gulp.dest('./dist/lib'))
})
gulp.task('static', function () {
    return gulp.src('./src/static/**')
        .pipe(gulp.dest('./dist/static'))
})
gulp.task('testSerise', gulp.series('copy', 'cssCopy'))



gulp.task('css', function () {
    return gulp.src('./src/css/**').pipe(cssmin()).pipe(gulp.dest('./dist/css'))
})
//监听，当有改变的时候做下一步操作
gulp.task('wacth', function () {

    gulp.watch('./dist', gulp.series('clean', gulp.parallel('copy', 'cssCopy', 'css', 'js', 'html')))
})

// js打包
// 注意：压缩时要将es6转成es5 防止部分浏览器不能识别es6代码的情况

gulp.task('js', function () {
    return gulp.src('./src/js/**')
        .pipe(bable({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// html打包
gulp.task('html', function () {
    return gulp.src('./src/pages/**')
        .pipe(htmlmin({
            removeEmputyAttributes: true, //移出所有空属性
            collapseWhitespace: true //压缩html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

// 同时批量处理任务
// exports.default = gulp.parallel('copy','cssCopy','css','js','html')

// 清除dist文件夹（解决当改变文件名时，再次压缩，原来的文件名仍然会存在）
gulp.task('clean', function () {
    return gulp.src('./dist', { allowEmpty: true })//allowEmpty dist目录不存在时
        .pipe(clean())
})

// 自动打开浏览器
gulp.task('webserver', function () {
    return gulp.src('./dist')
        .pipe(webserver({
            host: 'localhost',
            port: 3000,
            livereload: true,
            open: './pages/index.html'
        }))
})

// 将清除任务设置成默认任务，合理运用series 和parallel
exports.default = gulp.series('clean', gulp.parallel('copy', 'cssCopy', 'css', 'js', 'html','lib','static'), 'webserver')
// exports.default = gulp.series( 'clean')



